import java.io.*;

public final class Ejercicio1 implements Ejercicio
{
	public void execute(String strFileIn, String strFileOut)
	{
		//archivo entrada
		RandomAccessFile fin;
		//para borrar la salida anterior
		File foutDelete;
		//archivo salida
		RandomAccessFile fout;
		
		try
		{
			//abro el archivo
			fin = new RandomAccessFile(strFileIn,"r");
			
			//entrada de cada problema
			int intEntrada;
			//buffer de entrada y salida
			String strOutBuffer = "", strInBuffer = fin.readLine();
			//resultado de cada problema
			Resultado res;
			
			while
			(
					//mientras haya mas lineas
					strInBuffer != null
					//y la linea no sea 0
					&& ( intEntrada = new Integer(strInBuffer).intValue() ) > 0
			){
				//si el numero de entrada es mayor a 1
				if( intEntrada > 1 )
				{
					//levanto el resultado del problema
					res = this.primoMayorPotencia( intEntrada );
					
					//paso al buffer de salida el resultado
					strOutBuffer+= intEntrada + " " + res.primo + " " + res.potencia;
				}
				
				strOutBuffer+= "\n";
				
				//siguiente linea
				strInBuffer = fin.readLine();
			}
			
			//cierro el archivo
			fin.close();
			
			//borro el archivo de salida anterior
			foutDelete = new File(strFileOut);
			foutDelete.delete();
			
			//abro el archivo de salida
			fout = new RandomAccessFile(strFileOut,"rw");
			
			//paso el buffer de salida al archivo
			fout.writeBytes(strOutBuffer);
			
			//cierro el archivo de salida
			fout.close();
		}
		catch (IOException e)
		{
			//TODO: error abriendo archivo
		}
	}
	
	private Resultado primoMayorPotencia(int n)
	{
		int acum = n, i = 2, max = 0, pot = 0, j;
		
		while( acum > 1 )
		{
			j = 0;
			
			while( acum % i == 0 )
			{
				acum /= i;
				j++;
			}
			
			if( pot <= j )
			{
				max = i;
				pot = j;
			}
			
			i++;
		}
		
		return new Resultado(max,pot);
	}
	
	private class Resultado
	{
		public int primo;
		public int potencia;
		
		public Resultado(int p, int pot)
		{
			this.primo = p;
			this.potencia = pot;
		}
	}
}
